Skip to content

feat: persist CREATE TABLE storage selection - #489

Open
weicao wants to merge 1 commit into
mainfrom
task75-object-table
Open

feat: persist CREATE TABLE storage selection#489
weicao wants to merge 1 commit into
mainfrom
task75-object-table

Conversation

@weicao

@weicao weicao commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Scope

Persist the locked table-level storage selector for newly created tables:

  • PostgreSQL: WITH (myduck_storage = 'object'|'local')
  • MySQL: ENGINE=DUCKLAKE (ordinary engines retain local compatibility behavior)
  • omitted selector defaults to local
  • selector values reject credentials, endpoints, paths, duplicates, and conflicts
  • managed table metadata survives catalog reload

This PR does not implement physical DuckLake CRUD, migration of existing tables, replication changes, release/image changes, or changes to PR #488.

Verification

  • go test ./catalog -run '^Test(TableStorage|Normalize|Resolve)' -count=1
  • go test -tags gms_pure_go ./backend -run '^TestMySQLParser|^TestMySQLCompatibility' -count=1
  • go test -tags 'gms_pure_go duckdb_arrow ducklake_integration' ./pgserver -run '^$' -count=1

@weicao
weicao force-pushed the task75-object-table branch from f7b7013 to 0e4ba13 Compare August 27, 2026 21:37
weicao added a commit that referenced this pull request Sep 7, 2026
Replay accepted object-storage candidate 450fe6f0 onto current main, plus FlightSQL idempotent ClosePreparedStatement.

Usage boundaries:
1. MySQL CREATE TABLE is an implicit commit and is not undone by ROLLBACK (local and object tables alike).
2. One transaction cannot write both a local table and an object table (1105).
3. The local DuckLake catalog must persist; losing it cannot be recovered from the object bucket alone.

Does not update PR #489 / task75-object-table. Tree matches previous head d73a66f.
weicao added a commit that referenced this pull request Sep 7, 2026
Replay accepted object-storage candidate 450fe6f0 onto current main, plus FlightSQL idempotent ClosePreparedStatement.

Usage boundaries:
1. MySQL CREATE TABLE is an implicit commit and is not undone by ROLLBACK (local and object tables alike).
2. One transaction cannot write both a local table and an object table (1105).
3. The local DuckLake catalog must persist; losing it cannot be recovered from the object bucket alone.

Does not update PR #489 / task75-object-table. Tree matches previous head d73a66f.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant